ThinkPHP5


think\db\Query
library\think\db\Query.php at line 32

Class Query

Query

public class Query


Constructor Summary
mixed

__construct(string sql, array bind, boolean master, bool|string class)

执行查询 返回数据集

Method Summary
Connection

getConnection()

获取当前的数据库Connection对象

$this

connect(mixed config)

切换当前的数据库连接

$this

name(string name)

指定默认的数据表名(不含前缀)

$this

setTable(string table)

指定默认数据表名(含前缀)

string

getTable(string name)

得到当前或者指定名称的数据表

string

parseSqlTable(string sql)

将SQL语句中的__TABLE_NAME__字符串替换成带前缀的表名(小写)

int

execute(string sql, array bind)

执行语句

string

getLastInsID(string sequence)

获取最近插入的ID

string

getLastSql()

获取最近一次查询的sql语句

mixed

transaction(callable callback)

执行数据库事务

void

startTrans()

启动事务

void

commit()

用于非自动提交状态下面的查询提交

void

rollback()

事务回滚

boolean

batchQuery(array sql)

批处理执行SQL语句 批处理的指令都认为是execute操作

boolean

getConfig(string name)

获取数据库的配置参数

string

getPartitionTableName(array data, string field, array rule)

得到分表的的数据表名

protected Builder

builder()

获取当前的builder实例对象

static mixed

value(string field, mixed default)

得到某个字段的值

array

column(string field, string key)

得到某个列的数组

integer

count(string field)

COUNT查询

float|int

sum(string field)

SUM查询

float|int

min(string field)

MIN查询

float|int

max(string field)

MAX查询

float|int

avg(string field)

AVG查询

integer

setField(string|array field, mixed value)

设置记录的某个字段值 支持使用数据库字段和方法

integer|true

setInc(string field, integer step, integer lazyTime)

字段值(延迟)增长

integer|true

setDec(string field, integer step, integer lazyTime)

字段值(延迟)减少

protected false|integer

lazyWrite(string type, string guid, integer step, integer lazyTime)

延时更新检查 返回false表示需要延时 否则返回实际写入的数值

$this

join(mixed join, mixed condition, string type)

查询SQL组装 join

$this

union(mixed union, boolean all)

查询SQL组装 union

$this

field(mixed field, boolean except, string tableName, string prefix, string alias)

指定查询字段 支持字段排除和指定数据表

$this

view(string|array table, string|array field, string|array on, string type, mixed join)

指定JOIN查询字段

$this

partition(array data, string field, array rule)

设置分表规则

$this

where(mixed field, mixed op, mixed condition)

指定AND查询条件

$this

whereOr(mixed field, mixed op, mixed condition)

指定OR查询条件

$this

whereXor(mixed field, mixed op, mixed condition)

指定XOR查询条件

protected void

parseWhereExp(string logic, string|array|\Closure field, mixed op, mixed condition, array param)

分析查询表达式

$this

limit(mixed offset, mixed length)

指定查询数量

$this

page(mixed page, mixed listRows)

指定分页

\think\paginator\Collection

paginate(int|null listRows, int|bool simple, array config)

分页查询

$this

table(mixed table)

指定当前操作的数据表

$this

using(mixed using)

USING支持 用于多表删除

$this

order(string|array field, string order)

指定排序 order('id','desc') 或者 order(['id'=>'desc','create_time'=>'desc'])

$this

cache(mixed key, integer expire, string tag)

查询缓存

$this

group(string group)

指定group查询

$this

having(string having)

指定having查询

$this

lock(boolean lock)

指定查询lock

$this

distinct(string distinct)

指定distinct查询

$this

alias(mixed alias)

指定数据表别名

$this

force(string force)

指定强制索引

$this

comment(string comment)

查询注释

$this

fetchSql(boolean fetch)

获取执行的SQL语句

$this

fetchPdo(bool pdo)

不主动获取数据集

$this

fetchClass(string class)

指定数据集返回对象

$this

master()

设置从主服务器读取数据

$this

strict(bool strict)

设置是否严格检查字段名

$this

failException(bool fail)

设置查询数据不存在是否抛出异常

$this

sequence(string sequence)

设置自增序列名

$this

pk(string pk)

指定数据表主键

$this

whereTime(string field, string op, string|array range)

查询日期或者时间

mixed

getTableInfo(mixed tableName, string fetch)

获取数据表信息

string|array

getPk(string|array options)

获取当前数据表的主键

void

getTableFields(mixed options)

void

getFieldsType(mixed options)

void

getFieldsBind(mixed options)

protected integer

getFieldBindType(string type)

获取字段绑定类型

$this

bind(mixed key, mixed value, integer type)

参数绑定

bool

isBind(string key)

检测参数是否已经绑定

protected $this

options(array options)

查询参数赋值

mixed

getOptions(string name)

获取当前的查询参数

$this

with(string|array with)

设置关联查询JOIN预查询

$this

withField(string |, mixed field)

关联预加载中 获取关联指定字段值 example: Model::with(['relation' => function($query){ $query->withField("id,name"); }])

$this

via(string via)

设置当前字段添加的表别名

$this

relation(string relation)

设置关联查询

protected void

parsePkWhere(array|string data, mixed options)

把主键值转换为查询条件 支持复合主键

integer|string

insert(mixed data, boolean replace, boolean getLastInsID, string sequence)

插入记录

integer|string

insertGetId(mixed data, boolean replace, string sequence)

插入记录并获取自增ID

integer|string

insertAll(mixed dataSet)

批量插入记录

integer|string

selectInsert(string fields, string table)

通过Select方式插入记录

integer|string

update(mixed data)

更新记录

Collection|false|\PDOStatement|string

select(array|string|Query|\Closure data)

查找记录

array|false|\PDOStatement|string|Model

find(array|string|Query|\Closure data)

查找单条记录

protected void

throwNotFound(array options)

查询失败 抛出异常

array|\PDOStatement|string|Model

selectOrFail(array|string|Query|\Closure data)

查找多条记录 如果不存在则抛出异常

array|\PDOStatement|string|Model

findOrFail(array|string|Query|\Closure data)

查找单条记录 如果不存在则抛出异常

boolean

chunk(integer count, callable callback, string column)

分批数据返回处理

array

getBind()

获取绑定的参数 并清空

string

buildSql(bool sub)

创建子查询SQL

int

delete(mixed data)

删除记录

protected array

parseExpress()

分析表达式(可用于查询或者写入操作)

Constructor Detail

library\think\db\Query.php at line 189

__construct

public mixed __construct(string sql, array bind, boolean master, bool|string class)

执行查询 返回数据集

Parameters:
sql - sql指令
bind - 参数绑定
master - 是否在主服务器读操作
class - 指定返回的数据集对象
Throws:
BindParamException
PDOException

Method Detail

library\think\db\Query.php at line 100

getConnection

public Connection getConnection()

获取当前的数据库Connection对象


library\think\db\Query.php at line 111

connect

public $this connect(mixed config)

切换当前的数据库连接


library\think\db\Query.php at line 123

name

public $this name(string name)

指定默认的数据表名(不含前缀)


library\think\db\Query.php at line 135

setTable

public $this setTable(string table)

指定默认数据表名(含前缀)

Parameters:
table - 表名

library\think\db\Query.php at line 147

getTable

public string getTable(string name)

得到当前或者指定名称的数据表


library\think\db\Query.php at line 167

parseSqlTable

public string parseSqlTable(string sql)

将SQL语句中的__TABLE_NAME__字符串替换成带前缀的表名(小写)

Parameters:
sql - sql语句

library\think\db\Query.php at line 203

execute

public int execute(string sql, array bind)

执行语句

Parameters:
sql - sql指令
bind - 参数绑定
Throws:
BindParamException
PDOException

library\think\db\Query.php at line 214

getLastInsID

public string getLastInsID(string sequence)

获取最近插入的ID

Parameters:
sequence - 自增序列名

library\think\db\Query.php at line 224

getLastSql

public string getLastSql()

获取最近一次查询的sql语句


library\think\db\Query.php at line 235

transaction

public mixed transaction(callable callback)

执行数据库事务

Parameters:
callback - 数据操作方法回调

library\think\db\Query.php at line 245

startTrans

public void startTrans()

启动事务


library\think\db\Query.php at line 256

commit

public void commit()

用于非自动提交状态下面的查询提交

Throws:
PDOException

library\think\db\Query.php at line 267

rollback

public void rollback()

事务回滚

Throws:
PDOException

library\think\db\Query.php at line 279

batchQuery

public boolean batchQuery(array sql)

批处理执行SQL语句 批处理的指令都认为是execute操作

Parameters:
sql - SQL批处理指令

library\think\db\Query.php at line 290

getConfig

public boolean getConfig(string name)

获取数据库的配置参数

Parameters:
name - 参数名称

library\think\db\Query.php at line 303

getPartitionTableName

public string getPartitionTableName(array data, string field, array rule)

得到分表的的数据表名

Parameters:
data - 操作的数据
field - 分表依据的字段
rule - 分表规则

library\think\db\Query.php at line 358

builder

protected Builder builder()

获取当前的builder实例对象


library\think\db\Query.php at line 378

value

public static mixed value(string field, mixed default)

得到某个字段的值

Parameters:
field - 字段名
default - 默认值

library\think\db\Query.php at line 422

column

public array column(string field, string key)

得到某个列的数组

Parameters:
field - 字段名 多个字段用逗号分隔
key - 索引

library\think\db\Query.php at line 490

count

public integer count(string field)

COUNT查询

Parameters:
field - 字段名

library\think\db\Query.php at line 501

sum

public float|int sum(string field)

SUM查询

Parameters:
field - 字段名

library\think\db\Query.php at line 512

min

public float|int min(string field)

MIN查询

Parameters:
field - 字段名

library\think\db\Query.php at line 523

max

public float|int max(string field)

MAX查询

Parameters:
field - 字段名

library\think\db\Query.php at line 534

avg

public float|int avg(string field)

AVG查询

Parameters:
field - 字段名

library\think\db\Query.php at line 547

setField

public integer setField(string|array field, mixed value)

设置记录的某个字段值 支持使用数据库字段和方法

Parameters:
field - 字段名
value - 字段值

library\think\db\Query.php at line 566

setInc

public integer|true setInc(string field, integer step, integer lazyTime)

字段值(延迟)增长

Parameters:
field - 字段名
step - 增长值
lazyTime - 延时时间(s)
Throws:
Exception

library\think\db\Query.php at line 595

setDec

public integer|true setDec(string field, integer step, integer lazyTime)

字段值(延迟)减少

Parameters:
field - 字段名
step - 减少值
lazyTime - 延时时间(s)
Throws:
Exception

library\think\db\Query.php at line 625

lazyWrite

protected false|integer lazyWrite(string type, string guid, integer step, integer lazyTime)

延时更新检查 返回false表示需要延时 否则返回实际写入的数值

Parameters:
type - 自增或者自减
guid - 写入标识
step - 写入步进值
lazyTime - 延时时间(s)

library\think\db\Query.php at line 652

join

public $this join(mixed join, mixed condition, string type)

查询SQL组装 join

Parameters:
join - 关联的表名
condition - 条件
type - JOIN类型

library\think\db\Query.php at line 691

union

public $this union(mixed union, boolean all)

查询SQL组装 union


library\think\db\Query.php at line 713

field

public $this field(mixed field, boolean except, string tableName, string prefix, string alias)

指定查询字段 支持字段排除和指定数据表

Parameters:
except - 是否排除
tableName - 数据表名
prefix - 字段前缀
alias - 别名前缀

library\think\db\Query.php at line 757

view

public $this view(string|array table, string|array field, string|array on, string type, mixed join)

指定JOIN查询字段

Parameters:
table - 数据表
field - 查询字段
on - JOIN条件
type - JOIN类型

library\think\db\Query.php at line 812

partition

public $this partition(array data, string field, array rule)

设置分表规则

Parameters:
data - 操作的数据
field - 分表依据的字段
rule - 分表规则

library\think\db\Query.php at line 826

where

public $this where(mixed field, mixed op, mixed condition)

指定AND查询条件

Parameters:
field - 查询字段
op - 查询表达式
condition - 查询条件

library\think\db\Query.php at line 842

whereOr

public $this whereOr(mixed field, mixed op, mixed condition)

指定OR查询条件

Parameters:
field - 查询字段
op - 查询表达式
condition - 查询条件

library\think\db\Query.php at line 858

whereXor

public $this whereXor(mixed field, mixed op, mixed condition)

指定XOR查询条件

Parameters:
field - 查询字段
op - 查询表达式
condition - 查询条件

library\think\db\Query.php at line 876

parseWhereExp

protected void parseWhereExp(string logic, string|array|\Closure field, mixed op, mixed condition, array param)

分析查询表达式

Parameters:
logic - 查询逻辑 and or xor
field - 查询字段
op - 查询表达式
condition - 查询条件
param - 查询参数

library\think\db\Query.php at line 930

limit

public $this limit(mixed offset, mixed length)

指定查询数量

Parameters:
offset - 起始位置
length - 查询数量

library\think\db\Query.php at line 946

page

public $this page(mixed page, mixed listRows)

指定分页

Parameters:
page - 页数
listRows - 每页数量

library\think\db\Query.php at line 970

paginate

public \think\paginator\Collection paginate(int|null listRows, int|bool simple, array config)

分页查询

Parameters:
listRows - 每页数量
simple - 简洁模式或者总记录数
config - 配置参数 page:当前页, path:url路径, query:url额外参数, fragment:url锚点, var_page:分页变量, list_rows:每页数量 type:分页类名
Throws:
DbException

library\think\db\Query.php at line 1010

table

public $this table(mixed table)

指定当前操作的数据表

Parameters:
table - 表名

library\think\db\Query.php at line 1052

using

public $this using(mixed using)

USING支持 用于多表删除


library\think\db\Query.php at line 1065

order

public $this order(string|array field, string order)

指定排序 order('id','desc') 或者 order(['id'=>'desc','create_time'=>'desc'])

Parameters:
field - 排序字段
order - 排序

library\think\db\Query.php at line 1096

cache

public $this cache(mixed key, integer expire, string tag)

查询缓存

Parameters:
key - 缓存key
expire - 缓存有效期
tag - 缓存标签

library\think\db\Query.php at line 1115

group

public $this group(string group)

指定group查询

Parameters:
group - GROUP

library\think\db\Query.php at line 1127

having

public $this having(string having)

指定having查询

Parameters:
having - having

library\think\db\Query.php at line 1139

lock

public $this lock(boolean lock)

指定查询lock

Parameters:
lock - 是否lock

library\think\db\Query.php at line 1152

distinct

public $this distinct(string distinct)

指定distinct查询

Parameters:
distinct - 是否唯一

library\think\db\Query.php at line 1164

alias

public $this alias(mixed alias)

指定数据表别名

Parameters:
alias - 数据表别名

library\think\db\Query.php at line 1188

force

public $this force(string force)

指定强制索引

Parameters:
force - 索引名称

library\think\db\Query.php at line 1200

comment

public $this comment(string comment)

查询注释

Parameters:
comment - 注释

library\think\db\Query.php at line 1212

fetchSql

public $this fetchSql(boolean fetch)

获取执行的SQL语句

Parameters:
fetch - 是否返回sql

library\think\db\Query.php at line 1224

fetchPdo

public $this fetchPdo(bool pdo)

不主动获取数据集

Parameters:
pdo - 是否返回 PDOStatement 对象

library\think\db\Query.php at line 1236

fetchClass

public $this fetchClass(string class)

指定数据集返回对象

Parameters:
class - 指定返回的数据集对象类名

library\think\db\Query.php at line 1247

master

public $this master()

设置从主服务器读取数据


library\think\db\Query.php at line 1259

strict

public $this strict(bool strict)

设置是否严格检查字段名

Parameters:
strict - 是否严格检查字段

library\think\db\Query.php at line 1271

failException

public $this failException(bool fail)

设置查询数据不存在是否抛出异常

Parameters:
fail - 数据不存在是否抛出异常

library\think\db\Query.php at line 1283

sequence

public $this sequence(string sequence)

设置自增序列名

Parameters:
sequence - 自增序列名

library\think\db\Query.php at line 1295

pk

public $this pk(string pk)

指定数据表主键

Parameters:
pk - 主键

library\think\db\Query.php at line 1309

whereTime

public $this whereTime(string field, string op, string|array range)

查询日期或者时间

Parameters:
field - 日期字段名
op - 比较运算符或者表达式
range - 比较范围

library\think\db\Query.php at line 1357

getTableInfo

public mixed getTableInfo(mixed tableName, string fetch)

获取数据表信息

Parameters:
tableName - 数据表名 留空自动获取
fetch - 获取信息类型 包括 fields type bind pk

library\think\db\Query.php at line 1413

getPk

public string|array getPk(string|array options)

获取当前数据表的主键

Parameters:
options - 数据表名或者查询参数

library\think\db\Query.php at line 1424

getTableFields

public void getTableFields(mixed options)

library\think\db\Query.php at line 1430

getFieldsType

public void getFieldsType(mixed options)

library\think\db\Query.php at line 1436

getFieldsBind

public void getFieldsBind(mixed options)

library\think\db\Query.php at line 1454

getFieldBindType

protected integer getFieldBindType(string type)

获取字段绑定类型

Parameters:
type - 字段类型

library\think\db\Query.php at line 1474

bind

public $this bind(mixed key, mixed value, integer type)

参数绑定

Parameters:
key - 参数名
value - 绑定变量值
type - 绑定类型

library\think\db\Query.php at line 1490

isBind

public bool isBind(string key)

检测参数是否已经绑定

Parameters:
key - 参数名

library\think\db\Query.php at line 1501

options

protected $this options(array options)

查询参数赋值

Parameters:
options - 表达式参数

library\think\db\Query.php at line 1513

getOptions

public mixed getOptions(string name)

获取当前的查询参数

Parameters:
name - 参数名

library\think\db\Query.php at line 1528

with

public $this with(string|array with)

设置关联查询JOIN预查询

Parameters:
with - 关联方法名称

library\think\db\Query.php at line 1616

withField

public $this withField(string |, mixed field)

关联预加载中 获取关联指定字段值 example: Model::with(['relation' => function($query){ $query->withField("id,name"); }])

Parameters:
| - array $field 指定获取的字段

library\think\db\Query.php at line 1628

via

public $this via(string via)

设置当前字段添加的表别名


library\think\db\Query.php at line 1640

relation

public $this relation(string relation)

设置关联查询

Parameters:
relation - 关联名称

library\think\db\Query.php at line 1654

parsePkWhere

protected void parsePkWhere(array|string data, mixed options)

把主键值转换为查询条件 支持复合主键

Parameters:
data - 主键数据
options - 表达式参数
Throws:
Exception

library\think\db\Query.php at line 1701

insert

public integer|string insert(mixed data, boolean replace, boolean getLastInsID, string sequence)

插入记录

Parameters:
data - 数据
replace - 是否replace
getLastInsID - 返回自增主键
sequence - 自增序列名

library\think\db\Query.php at line 1731

insertGetId

public integer|string insertGetId(mixed data, boolean replace, string sequence)

插入记录并获取自增ID

Parameters:
data - 数据
replace - 是否replace
sequence - 自增序列名

library\think\db\Query.php at line 1742

insertAll

public integer|string insertAll(mixed dataSet)

批量插入记录

Parameters:
dataSet - 数据集

library\think\db\Query.php at line 1770

selectInsert

public integer|string selectInsert(string fields, string table)

通过Select方式插入记录

Parameters:
fields - 要插入的数据表字段名
table - 要插入的数据表名
Throws:
PDOException

library\think\db\Query.php at line 1796

update

public integer|string update(mixed data)

更新记录

Parameters:
data - 数据
Throws:
Exception
PDOException

library\think\db\Query.php at line 1860

select

public Collection|false|\PDOStatement|string select(array|string|Query|\Closure data)

查找记录

Throws:
DbException
ModelNotFoundException
DataNotFoundException

library\think\db\Query.php at line 1950

find

public array|false|\PDOStatement|string|Model find(array|string|Query|\Closure data)

查找单条记录

Throws:
DbException
ModelNotFoundException
DataNotFoundException

library\think\db\Query.php at line 2037

throwNotFound

protected void throwNotFound(array options)

查询失败 抛出异常

Parameters:
options - 查询参数
Throws:
ModelNotFoundException
DataNotFoundException

library\think\db\Query.php at line 2056

selectOrFail

public array|\PDOStatement|string|Model selectOrFail(array|string|Query|\Closure data)

查找多条记录 如果不存在则抛出异常

Throws:
DbException
ModelNotFoundException
DataNotFoundException

library\think\db\Query.php at line 2070

findOrFail

public array|\PDOStatement|string|Model findOrFail(array|string|Query|\Closure data)

查找单条记录 如果不存在则抛出异常

Throws:
DbException
ModelNotFoundException
DataNotFoundException

library\think\db\Query.php at line 2083

chunk

public boolean chunk(integer count, callable callback, string column)

分批数据返回处理

Parameters:
count - 每次处理的数据数量
callback - 处理回调方法
column - 分批处理的字段名

library\think\db\Query.php at line 2116

getBind

public array getBind()

获取绑定的参数 并清空


library\think\db\Query.php at line 2130

buildSql

public string buildSql(bool sub)

创建子查询SQL

Throws:
DbException

library\think\db\Query.php at line 2143

delete

public int delete(mixed data)

删除记录

Parameters:
data - 表达式 true 表示强制删除
Throws:
Exception
PDOException

library\think\db\Query.php at line 2187

parseExpress

protected array parseExpress()

分析表达式(可用于查询或者写入操作)


ThinkPHP5